﻿#define _CRT_SECURE_NO_WARNINGS


//#include <stdio.h>
//int check_sys()
//{
//	int i = 1;
//	return (*(char*)&i);
//}
//int main()
//{
//	int ret = check_sys();
//	if (ret == 1)
//	{
//		printf("小端\n");
//	}
//	else
//	{
//		printf("⼤端\n");
//	}
//	return 0;
//}
//

//#include <stdio.h>
//int main()
//{
//
//	//int 的-1是
//	//又因为在计算机中整数都是由补码进行存放的
//	//所以
//	//int -1
//	// int a = -1;
//	// 10000000 00000000 00000000 00000001//原码
//	// 11111111 11111111 11111111 11111110//反码
//	// 11111111 11111111 11111111 11111111//补码
//	//使用内存查看功能可以看到&a=0xffff ffff
//	//signed char/unsigned char大小都为一个字节所以当赋给这两种类型的变量超过255的值的时候
//	// 他们就会进行截断//只取属于八位以内的部分//是对补码而言
//
//	signed char b = -1;
//	//11111111 -b
//	unsigned char c = -1;
//	//11111111 -c
//	//b和c在内存中存储的其实都是255，
//	
//	printf("b=%d,c=%d\n", b, c);
//
//	//%d - 打印有符号整数
//	//b/c在此处需要整形提升即转换为int类型
//	// 11111111 11111111 11111111 11111111 -b(int)//补码//signed char使用符号位填充高字节
//	// 10000000 00000000 00000000 00000001//原码
//	// 即-1
//	// 00000000 00000000 00000000 11111111 -c(int)//补码//unsigned char使用0填充高字节//无符号数的原码/反码/补码都是原码本身
//	//即255
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	char a = -128;
//	//10000000 00000000 00000000 10000000//原码
//	//11111111 11111111 11111111 01111111//反码（原码符号位不变其他位取反）
//	//11111111 11111111 11111111 10000000 //补码(反码+1)
//	//所以char a实际上存储的是10000000 
//	unsigned int b = a;
//	printf("%u\n", a);
//	//无符号整形提升
//	//11111111 11111111 11111111 10000000//补码//因为是提升到无符号整形所以高位符号位填充
//	//即4294967168
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	char a = 128;
//	//00000000 00000000 00000000 10000000//原码
//	//01111111 11111111 11111111 01111111//反码（原码符号位不变其他位取反）
//	//01111111 11111111 11111111 10000000 //补码(反码+1)
//	//所以char a实际上存储的是10000000 
//	//所以char a = 128;或者char a = -128;使用%u都是输出4294967168
//	unsigned int b = a;
//	printf("%u\n", a);
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	char a[1000];
//	//char 的取值为 0->127->-128->-1-0即是循环的
//	int i;
//	for (i = 0; i < 1000; i++)
//	{//所以-1到0之间有255个字符
//		a[i] = -1 - i;
//	}
//	printf("%d", strlen(a));
//	return 0;
//}

//#include <stdio.h>
//unsigned char i = 0;
//int main()
//{
//	//char类型最大为127所以循环程序会死循环
//	for (i = 0; i <= 255; i++)
//	{
//		printf("hello world\n");
//	}
//	return 0;
//}


//#include <stdio.h>
//#include <Windows.h>
//int main()
//{
//	//i属于unsigned int类型始终满足i >= 0
//	//所以也是死循环
//	unsigned int i;
//	for (i = 9; i >= 0; i--)
//	{
//		printf("%u\n", i);
//		Sleep(100);
//	}
//	return 0;
//}


//#include <stdio.h>
////X86环境 ⼩端字节序
//int main()
//{
//	int a[4] = { 1, 2, 3, 4 };
//	int* ptr1 = (int*)(&a + 1);
//	int* ptr2 = (int*)((int)a + 1);
//	printf("%X,%X", ptr1[-1], *ptr2);
//	return 0;
//}


//#include <stdio.h>
////X86环境 ⼩端字节序
//int main()
//{
//	float a = 0.5;
//
//	return 0;
//}


#include <stdio.h>
int main()
{
	int n = 9;
	float* pFloat = (float*)&n;
	printf("n的值为：%d\n", n);
	printf("*pFloat的值为：%f\n", *pFloat);
	*pFloat = 9.0;
	printf("num的值为：%d\n", n);
	printf("*pFloat的值为：%f\n", *pFloat);
	return 0;
}